/* Araujo Heiker CI. 19726991
 * Goyo Willandher CI.20666542
 * Rodriguez Rafael CI.20009872
 * Williams Roman CI.20016812 
 * Morett Gilberth CI.20929667*/

package controlador;

import modelo.Drogueria;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;

import javax.swing.WindowConstants;

import vista.VentanaProducto;
import modelo.Cliente;
import modelo.Producto;
import modelo.Linea;
import vista.VentanaListaProducto;

import controlador.ControladorVentanaProducto;

public class ControladorListaProducto implements ActionListener {

	private VentanaListaProducto ventanalistaproducto;
	private Drogueria drogueria;
	private String codigo;

	public ControladorListaProducto(Drogueria drogueria) {
		super();
		ventanalistaproducto = new VentanaListaProducto();
		ventanalistaproducto.setLocationRelativeTo(null);
		ventanalistaproducto.setVisible(true);
		ventanalistaproducto.agregarListener(this);
		this.drogueria = drogueria;
		this.cargarListado();

	}

	public ControladorListaProducto(VentanaListaProducto ventanalistaproducto,
			Producto producto, ArrayList<Producto> productos) {
		super();
		this.ventanalistaproducto = ventanalistaproducto;
	
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equalsIgnoreCase("Incluir")) {

			clickIncluir();

		} else if (e.getActionCommand().equalsIgnoreCase("Modificar")) {

			if (ventanalistaproducto.numeroFilasSeleccionadas() == 0) {
				ventanalistaproducto
						.mostrarMensaje(" No ha seleccionado ningun producto");

			} else {
				String codigoProducto = ventanalistaproducto
						.obtenerCodigoProductoFilaSeleccionada();
				new ControladorVentanaProducto(drogueria, "Modificar",
						codigoProducto);
				clickAceptar();

			}
		}

		else if (e.getActionCommand().equalsIgnoreCase("Buscar")) {
			if (ventanalistaproducto.numeroFilasSeleccionadas() == 0) {
				ventanalistaproducto
						.mostrarMensaje(" No ha seleccionado ningun producto");
			} else {
				String codigoProducto = ventanalistaproducto
						.obtenerCodigoProductoFilaSeleccionada();
				new ControladorVentanaProducto(drogueria, "Buscar",
						codigoProducto);
				clickBuscar();

			}
		}

		else if (e.getActionCommand().equalsIgnoreCase("Eliminar")) {
			if (ventanalistaproducto.numeroFilasSeleccionadas() == 0) {
				ventanalistaproducto
						.mostrarMensaje(" No ha seleccionado ningun producto");
			} else {
				String codigoProducto = ventanalistaproducto
						.obtenerCodigoProductoFilaSeleccionada();

				clickEliminar();
			}
		}
	}

	public void clickIncluir() {

		try {

			ventanalistaproducto.dispose();
			this.finalize();
		} catch (Throwable e1) {
			e1.printStackTrace();
		} finally {
			new ControladorVentanaProducto(drogueria, "", codigo);

		}
	}

	public void clickModificar() {

		try {

			ventanalistaproducto.dispose();
			this.finalize();
		} catch (Throwable e1) {
			e1.printStackTrace();
		} finally {

		}
	}

	public void clickEliminar() {

		String codigoProducto = ventanalistaproducto
				.obtenerCodigoProductoFilaSeleccionada();
		ventanalistaproducto.eliminarFilaSeleccionada(ventanalistaproducto
				.getFilaSeleccionada());

		for (int i = 0; i < drogueria.cantidadProductos(); i++) {

			if (codigoProducto.equals(drogueria.getUnProducto(i)
					.getCodigoProducto()))
				drogueria.getUnProducto(i).setEstatus(Producto.INACTIVO);

		}

	}

	public void clickAceptar() {

		try {

			ventanalistaproducto.dispose();
			this.finalize();
		} catch (Throwable e1) {
			e1.printStackTrace();
		} finally {

		}
	}

	public void clickBuscar() {

		try {

			ventanalistaproducto.dispose();
			this.finalize();
		} catch (Throwable e1) {
			e1.printStackTrace();
		} finally {

		}
	}

	//Este metodo permite cargar el arreglo de Producto  de la drogueria en la tabla de Productos de la Ventana Lista Producto;
	//Solo cargara los Productos cuyo estatus sea Activo
	
	public void cargarListado() {
		ArrayList<Producto> productos = drogueria.getProductos();
		for (int i = 0; i < drogueria.cantidadProductos(); i++) {
			Producto producto = productos.get(i);

			if (producto.getEstatus() == Producto.INACTIVO) {
				continue;
			}
			Vector<String> datoProducto = new Vector<String>(4, 1);
			String codigo = producto.getCodigoProducto();
			String nombre = producto.getNombre();
			String nombreLinea = producto.getLinea().getClasificacion();
			String presentacion = producto.getPresentacion();

			datoProducto.add(codigo);
			datoProducto.add(nombre);
			datoProducto.add(nombreLinea);
			datoProducto.add(presentacion);
			ventanalistaproducto.agregarFilaProducto(datoProducto);

		}

	}
}
